package linkedListQueue

type LinkedListQueue[E any] struct {
	list *LinkedList[E]
}

func MakeLinkedListQueue[E any]() *LinkedListQueue[E] {
	return &LinkedListQueue[E]{
		list: MakeLinkedList[E](),
	}
}

// GetSize 查看队列元素数量
func (l *LinkedListQueue[E]) GetSize() int {
	return l.list.GetSize()
}

// GetFront 查看队首元素
func (l *LinkedListQueue[E]) GetFront() (E, error) {
	return l.list.GetFirst()
}

// DeEnqueue 出队
func (l *LinkedListQueue[E]) DeEnqueue() (E, error) {
	return l.list.RemoveFirst()

}

// Enqueue 入队
func (l *LinkedListQueue[E]) Enqueue(e E) error {
	return l.list.AddLast(e)
}

//IsEmpty 队列是否为空
func (l *LinkedListQueue[E]) IsEmpty() bool {
	return l.list.IsEmpty()
}

func (l *LinkedListQueue[E]) String() string {
	return l.list.String()
}
